using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Media;
using System.Xml.Serialization;

namespace AgilePlannerDT.Data
{
    /// <summary>
    /// Defines a story card planning object
    /// </summary>
    public interface StoryCard : IndexCard, IXmlSerializable
    {

        /// <summary>
        /// Gets or sets the acceptance test text.
        /// </summary>
        /// <value>The acceptance test text.</value>
        String AcceptanceTestText
        {
            get;
            set;
        }

        IndexCardWithChild ParentCard
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the acceptance test URL.
        /// </summary>
        /// <value>The acceptance test URL.</value>
        String AcceptanceTestUrl
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the background color of the card.
        /// </summary>
        /// <value>The background.</value>
        Color Background
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the name of the developer responsible for this story card.
        /// </summary>
        /// <value>The card owner.</value>
        String CardOwner
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the current front side of the story card.
        /// </summary>
        /// <value>The current side up.</value>
        int CurrentSideUp
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the handwriting image.
        /// </summary>
        /// <value>The handwriting image.</value>
        byte[] HandwritingImage
        {
            get;
            set;
        }

        string RallyID
        {
            get;
            set;
        }

        string FitID
        {
            get;
            set;
        }

        /// <summary>
        /// Updates the storycard to the provided values.
        /// Does NOT update parent-child relations.
        /// </summary>
        /// <param name="storycard">The storycard.</param>
        void Update(StoryCard storycard);
    }
}
